/*
 *    Copyright (c) 2018-2025, boss All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the boss developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: boss
 */

package com.hopes.bizz.emergency.resources.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.hopes.bizz.emergency.common.constant.enums.ParkEmergencyModDictEnum;
import com.hopes.bizz.emergency.common.constant.enums.ParkEmergencySysDictEnum;
import com.hopes.boss.admin.api.resolver.DictResolver;
import com.hopes.boss.admin.api.resolver.enums.AdminDictEnum;
import com.hopes.boss.admin.api.resolver.enums.SysDictEnum;
import com.hopes.boss.common.entity.BaseEntity;
import com.hopes.boss.common.entity.BaseLogicEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 应急专家
 *
 * @author cx
 * @date 2023-11-02 17:47:52
 */
@Data
@TableName(value = "er_expert")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "应急专家")
public class ErExpertEntity extends BaseLogicEntity {

    private static final long serialVersionUID = 1L;


	/**
	* 标识
	*/
    @TableId(type = IdType.ASSIGN_ID)
    @Schema(description="标识")
    private Long id;

	/**
	* 姓名
	*/
    @Schema(description="姓名")
    private String name;

	/**
	* 性别
	*/
    @Schema(description="性别")
    private String sex;

	/**
	* 出生日期
	*/
    @Schema(description="出生日期")
    private LocalDate birthDate;

	/**
	* 民族
	*/
    @Schema(description="民族")
    private String nation;

	/**
	* 籍贯
	*/
    @Schema(description="籍贯")
    private String birthPlace;

	/**
	* 上传照片
	*/
    @Schema(description="上传照片")
    private String photoImg;

	/**
	* 户籍所在地
	*/
    @Schema(description="户籍所在地")
    private String domicileLocation;

	/**
	* 身份证号码
	*/
    @Schema(description="身份证号码")
    private String idCardNo;

	/**
	* 政治面貌
	*/
    @Schema(description="政治面貌")
    private Integer politicCountenance;

	/**
	* 健康状况
	*/
    @Schema(description="健康状况")
    private Integer health;

	/**
	* 家庭地址
	*/
    @Schema(description="家庭地址")
    private String homeAddress;

	/**
	* 家庭电话
	*/
    @Schema(description="家庭电话")
    private String homeNumber;

	/**
	* 毕业院校
	*/
    @Schema(description="毕业院校")
    private String university;

	/**
	* 最高学历
	*/
    @Schema(description="最高学历")
    private Integer highestDegree;

	/**
	 * 是否使用
	 */
	@Schema(description="是否使用")
	private String useFlag;

	/**
	* 所属队伍
	*/
    @Schema(description="所属队伍")
    private Long teamId;

	/**
	* 队伍名称
	*/
    @Schema(description="队伍名称")
    private String teamName;

	/**
	* 参加工作时间
	*/
    @Schema(description="参加工作时间")
    private LocalDate workTime;

	/**
	* 工作单位
	*/
    @Schema(description="工作单位")
    private String workCompany;

	/**
	* 单位地址
	*/
    @Schema(description="单位地址")
    private String workAddress;

	/**
	* 单位邮政编码
	*/
    @Schema(description="单位邮政编码")
    private String workCode;

	/**
	* 工作地区
	*/
    @Schema(description="工作地区")
    private String workRegion;

	/**
	* 工作地址定位
	*/
    @Schema(description="工作地址定位")
    private String workLocation;

	/**
	* 行政职务
	*/
    @Schema(description="行政职务")
    private String administrativePost;

	/**
	* 技术职称
	*/
    @Schema(description="技术职称")
    private Integer technicalTitle;

	/**
	* 移动电话
	*/
    @Schema(description="移动电话")
    private String phone;

	/**
	* 办公电话
	*/
    @Schema(description="办公电话")
    private String workNumber;

	/**
	* 电子邮箱
	*/
    @Schema(description="电子邮箱")
    private String email;

	/**
	* 传真
	*/
    @Schema(description="传真")
    private String fax;

	/**
	* 专家类别
	*/
    @Schema(description="专家类别")
    private Integer expertsType;

	/**
	* 专家级别
	*/
    @Schema(description="专家级别")
    private Integer expertLevel;

	/**
	* 专业领域
	*/
    @Schema(description="专业领域")
    private Integer professionalField;

	/**
	* 擅长处理事故
	*/
    @Schema(description="擅长处理事故")
    private Integer isGoodHandlingAccident;

	/**
	* 从事行业
	*/
    @Schema(description="从事行业")
    private String engagedIndustry;

	/**
	* 擅长领域
	*/
    @Schema(description="擅长领域")
    private Integer adeptField;

	/**
	* 备注
	*/
    @Schema(description="备注")
    private String remarks;

	/**
	* 学术情况
	*/
    @Schema(description="学术情况")
    private String academicSituation;

	/**
	* 学术情况附件上传
	*/
    @Schema(description="学术情况附件上传")
    private String academicSituationAttachment;

	/**
	* 奖励情况
	*/
    @Schema(description="奖励情况")
    private String honer;

	/**
	* 奖励情况附件上传
	*/
    @Schema(description="奖励情况附件上传")
    private String honersAttachment;

	/**
	* 主要成果
	*/
    @Schema(description="主要成果")
    private String mainAchievements;

	/**
	* 主要成果上传
	*/
    @Schema(description="主要成果上传")
    private String mainAchievementsAttachment;

	/**
	* 资质证书(附件)
	*/
    @Schema(description="资质证书(附件)")
    private String files;

	/**
	* 经度
	*/
    @Schema(description="经度")
    private String longitude;

	/**
	* 维度
	*/
    @Schema(description="维度")
    private String latitude;

	/**
	* 高度
	*/
    @Schema(description="高度")
    private String altitude;

	/**
	* 评估日期
	*/
    @Schema(description="评估日期")
    private LocalDate evaluateDate;

	/**
	* 评估得分
	*/
    @Schema(description="评估得分")
    private BigDecimal evaluateScore;

	/**
	* 机构ID
	*/
    @Schema(description="机构ID")
    private Long orgId;

	public String getOrgIdStr() {
		return DictResolver.getItemLabelByValue(AdminDictEnum.sys_company,this.orgId);
	}
	public String getSexStr() {
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.gender,this.getSex());
	}

	public String getPoliticCountenanceStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_politic_countenance, this.getPoliticCountenance());
	}
	public String getHealthStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_health, this.getHealth());
	}
	public String getHighestDegreeStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_highest_degree, this.getHighestDegree());
	}
	public String getTechnicalTitleStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_technical_title, this.getTechnicalTitle());
	}
	public String getExpertsTypeStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_experts_type, this.getExpertsType());
	}
	public String getExpertLevelStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_expert_level, this.getExpertLevel());
	}
	public String getProfessionalFieldStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_professional_field, this.getProfessionalField());
	}
	public String getIsGoodHandlingAccidentStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_good_handling_accidents, this.getIsGoodHandlingAccident());
	}
	public String getAdeptFieldStr(){
		return DictResolver.getItemLabelByValue(ParkEmergencySysDictEnum.emergency_adept_field, this.getAdeptField());
	}

	public String getTeamIdStr() {
		return DictResolver.getItemLabelByValue(ParkEmergencyModDictEnum.emergency_team_id, this.getTeamId());
	}

	public String getUseFlagStr() {
		return DictResolver.getItemLabelByValue(SysDictEnum.yes_no_type, this.useFlag);
	}

}